<?php
/*********************** Easy-D ****************************
 @ 文件名称：Cache.class.php
 @ 文件名称：缓存操作类                  
 @ 文件作用：主要用于操作文件缓存，内存缓存等工作
 @ 维护人员：weixuan                                      
 ***********************************************************/

namespace coreLib\CacheClass;

class Cache{

	public $cacheData;  //缓存数据
	public $route; 		//路由对象
	
	/*
	 * 构造函数
	 * @params {$route} 路由操作对象
	 * @params {$db}	数据库操作对象	
	 * @return 没有返回值
	 */
	function __construct($route){

		$this->route = $route;

	}

	/*
	 * 生成缓存文件数据
	 * @params {$data} 需要被缓存的数据
	 * @return 没有返回值
	 */
	function createFileCacheData($data){


		//对数据进行文件缓存
		if($data){

			//获取生成的最终缓存文件路径
			$cachePath = $this->createCachaPath();

			//将需要缓存的文件转化为json
			$cacheJsonData = json_encode($data);

			//将数据写入文件
			file_put_contents($cachePath, $cacheJsonData);

		}

	} 

	/*
	 * 获取缓存数据
	 * @return 没有返回值
	 */
	public function getCacheData(){

		//判断该接口是否需要进行缓存读取
		if($this->route->requestMethod != 'GET' && $this->route->requestMethod != 'ALL'){
		   return false;	
		}

		//判断接口是否要获取缓存
		$nowApi = $this->route->nowRequestInterfaceInfo[0];

		//获取当前请求的接口配置信息
		$apiInfo = @$GLOBALS['interfacePrivilege'][$nowApi];
		
		//不进行缓存的获取
		if(@$apiInfo['isGetCache']!= NULL && $apiInfo['isGetCache'] == 'NO'){
			return false;
		}

		//获取请求接口的缓存文件路径
		$cacheFilePath = $this->createCachaPath();

		

		//判断文件是否存在
		if(file_exists($cacheFilePath)){

			//查看缓存过期时间
			$cacheValidity  = $GLOBALS['settings']['cache']['cacheValidity'];

			//获取文件创建时间
			$fileCreateTime = filectime($cacheFilePath);

			//判断是否过期
			if(($fileCreateTime + $cacheValidity) < time()){
				return false;
			} 	

			//取出缓存数据
			$this->cacheData = file_get_contents($cacheFilePath);
			
			return json_decode($this->cacheData);

		}

	}

	/*
	 * 生成接口缓存文件路径
	 * @return 缓存文件保存的完整路径
	 */
	public function createCachaPath(){

		//获取缓存数据存放目录
		$cacheRootPath = BASE_PATH."/".$GLOBALS['settings']['cache']['cacheDir']."/";

		//生成需要保存的文件路径
		$cacheFilePath = $this->route->pathInfo;
		$cacheFilePath = str_replace("/","_",$this->route->pathInfo);

		//最终缓存文件名称
		$rsCacheFile   = $cacheRootPath."c".$cacheFilePath.".json";

		return $rsCacheFile;

	}

}
?>